// 射击气球（452）
// 遍历所有气球，当气球的开始坐标大于end
// 将end 设置为当前end 并增加箭的数量
// var findMinArrowShots = function (points) {
//     if (points.length == 0) return 0;
//     points.sort((a, b) => a[1] - b[1]); // 保证气球有序
//     var count = 1;
//     var end = points[0][1];
//     for (var i = 1; i < points.length; i++) {
//         if (points[i][0] <= end) {
//             continue
//         }
//         end = points[i][1];
//         count++
//     }
//     return count
// }

// 因为有序 所以可以直接判断
function findMaxArrowShot(points) {
    if (points.length == 0) return 0;
    points.sort((a, b) => a[1] - b[1]); // 保证气球有序  【是以结尾去排的】
    var count = 1;
    var end = points[0][1];
    // 本质就是 和上一个比较是否存在交集
    for (var i = 1; i < points.length; i++) {
        if(points[i][0] <= end){
            continue
        }
        end = points[i][1];
        count++
    }
    return count;
}

// points = [[10,16],[2,8],[1,6],[7,12]]
points = [[1,2],[3,4],[5,6],[7,8]]
console.log(findMaxArrowShot(points))


// https://assets.leetcode-cn.com/solution-static/452/1.png
// 示例 1：
// 代表的是横向开始，结束的位置
// 输入：points = [[10,16],[2,8],[1,6],[7,12]]
// 输出：2
// 解释：对于该样例，x = 6 可以射爆 [2,8],[1,6] 两个气球，以及 x = 11 射爆另外两个气球
// 示例 2：

// 输入：points = [[1,2],[3,4],[5,6],[7,8]]
// 输出：4
// 示例 3：

// 输入：points = [[1,2],[2,3],[3,4],[4,5]]
// 输出：2
// 示例 4：

// 输入：points = [[1,2]]
// 输出：1
// 示例 5：

// 输入：points = [[2,3],[2,3]]
// 输出：1

// 来源：力扣（LeetCode）
// 链接：https://leetcode-cn.com/problems/minimum-number-of-arrows-to-burst-balloons
// 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。